package model;

/**
 * GameListener interface defines the functions that all classes
 * that want to listen to the GameModel class must implement.
 * 
 * @author Alexander Craig
 */
public interface GameListener {
	
	/**
	 * This function will be called whenever the player successfully makes a move.
	 * @param event	stores the source and additional details on the event
	 */
	public void playerMove(GameEvent event);
	
	/**
	 * This function will be called whenever the player dies.
	 * @param event	stores the source and additional details on the event
	 */
	public void playerDeath(GameEvent event);
	
	/**
	 * This function is called whenever the game level is reset for any reason.
	 * @param event stores the source and additional details on the event
	 */
	public void levelReset(GameEvent event);
	
	/**
	 * This function will be called if the player loses all their lives.
	 * @param event	stores the source and additional details on the event
	 */
	public void gameOver(GameEvent event);
	
	/**
	 * This function will be called when every dot on the grid has been collected.
	 * @param event	stores the source and additional details on the event
	 */
	public void levelComplete(GameEvent event);
	
	/**
	 * This function will be called when ever a new Game has been created
	 * @param event	stores the source and additional details on the event
	 */
	public void newGame(GameEvent event);
	
}
